package Server.System;

import static org.junit.Assert.*;

import javax.vecmath.Vector3d;

import org.junit.Before;
import org.junit.Test;

import sun.security.x509.DeltaCRLIndicatorExtension;

public class KoerperTest {
	private Koerper erde;
	private Koerper sonne;
	private double delta_t;
	private static final double HALBES_JAHR_IN_TAGEN = 182; //genau 182,5

	@Before
	public void setUp() throws Exception {
		double xE = -1.496E11;
		double yE = 0;
		double zE = 0;
		delta_t = 60*60*24; // 1 Tag
		//2. Koerper instanzieren
		erde = new Koerper(6368000,5.977E24,new Vector3d(xE,yE,zE));		
		sonne = new Koerper(109*6368,3.33*5.977E29,new Vector3d(0,0,0));
		//3. Anfangsgeschw. Erde festlegen und Berechnung von Kraft und Beschl. zum Startzeitpunkt
		
	}

	@Test
	public void testBerechneNeuePosition() {
		erde.setV(new Vector3d(0,29865,0)); //v0 = 29865 m/s
		erde.berechneBeschleunigung(sonne);
		
		for (int aktuellerTag = 1; aktuellerTag <= HALBES_JAHR_IN_TAGEN; aktuellerTag++) {
			
			
			System.out.println("Erde - Position am Tag " +aktuellerTag +": " +erde.toString());		
//			System.out.println("Kraft(t)): " +erde.getKraft());
//			System.out.println("Beschleunigung(t): " +erde.getA());
//			System.out.println("Geschwindigkeit(t): " +erde.getV());
			System.out.println("----------------------------------------------------------------------------------");
			erde.berechneNeuePosition(delta_t);
		}
		//Liste der gespeicherten Positionen ausgeben
		System.out.println("Liste der gespeicherten Posititionen: " +erde.getPositionsListe().toString());
		
	}
	
    
	@Test
	public void testId(){
		assertEquals(1, erde.getId());
		assertEquals(2, sonne.getId());
	}
	
	@Test
	public void testInitAnfangsgeschwindigkeit(){
		erde.initAnfangsgeschwindigkeit(sonne, new Vector3d(0,0,1));
		System.out.println("v - Erde: " +erde.getV());
	}
	
	@Test
	public void testCalcNewPos(){
		erde.initAnfangsgeschwindigkeit(sonne, new Vector3d(0,0,1));
		erde.berechneBeschleunigung(sonne);
		Vector3d a = erde.CalcNewPos(delta_t);
		System.out.println(a);
		
	}
	@Test
	public void testBerechneNeuePosition1(){
		erde.initAnfangsgeschwindigkeit(sonne, new Vector3d(0,0,1));
		erde.berechneBeschleunigung(sonne);
		erde.berechneNeuePosition(delta_t);
		Vector3d a = erde.getA();
		System.out.println(a);
	}

}
